package net.daoke.relation.model.domain;

import cn.hutool.core.date.LocalDateTimeUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.neo4j.core.schema.GeneratedValue;

import java.time.LocalDateTime;
import java.util.UUID;

/**
 * 基础实体类，包含一个自动生成的 ID 和一个 UUID 作为编号。
 */
@Data
public class BaseEntity {

    @Id
    @GeneratedValue
    @JsonIgnore  // 这个字段不会被返回到客户端
    private Long id;

    /**
     * 编号，用于标识实体。
     */
    @Schema(description = "编号")
    private String no;

    /**
     * 创建时间，用于记录实体的创建时间。
     */
    @Schema(description = "创建时间")
    private Long createTime;

    /**
     * 创建时间字符串，用于显示实体的创建时间。
     */
    @Schema(description = "创建时间字符串")
    private String createTimeStr;

    public BaseEntity() {
        LocalDateTime now = LocalDateTime.now();
        // 通过构造函数自动生成 UUID
        this.no = UUID.randomUUID().toString();
        this.createTime = LocalDateTimeUtil.toEpochMilli(now);
        this.createTimeStr = LocalDateTimeUtil.format(now, "yyyy-MM-dd HH:mm:ss");
    }
}